package com.shenjialin.util;

import com.shenjialin.Game.Bullet;
import com.shenjialin.Tank.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 坦克对象的 对象池
 */
public class TankPool {
    public static final int DEFAULT_SIZE = 30;
    public static final int POOL_MAXSIZE = 40;
    // 用于保存所有子弹的容器
    private static List<EnemyTank> pool = new ArrayList<>();
    // 在类加载的时候 创建200个子弹对象 添加到容器中
    static {
        for (int i = 0; i < DEFAULT_SIZE; ++i) {
            pool.add(new EnemyTank());
        }
    }

    /**
     * 从池塘中获得坦克对象
     * @return
     */
    public static EnemyTank get() {
        EnemyTank enemyTank;
        if (pool.size() == 0) {// 对象池中没有对象可以使用
            enemyTank = new EnemyTank();
        }else{// 从对象池中获得一个子弹对象
            enemyTank = pool.remove(0);
        }
        return enemyTank;
    }

    /**
     * 坦克对象的回收 归还到对象池中
     */
    public static void theReturn(EnemyTank enemyTank) {
        // 对象池满
        if(pool.size() >= POOL_MAXSIZE){
            return;
        }
        pool.add(enemyTank);
    }
}
